/**
 * vnode的类型
 */

function patch(n1, n2, container) {
    if (n1 && n1.type !== n2.type) {
        unmount(n1);
        n1 = null;
    }
    // 代码运行到这里，证明 n1 和 n2 所描述的内容相同
    const {
        type
    } = n2;
    // 如果 n2.type 的值是字符串类型，则它描述的是普通标签素
    if (typeof type === "string") {
        if (!n1) {
            mountElement(n2, container);
        } else {
            patchElement(n1, n2);
        }
    } else if (typeof type === "object") {
        // 如果 n2.type 的值的类型是对象，则它描述的是组件
    } else if (type === "xxx") {
        // 处理其他类型的 vnode
    }
}